package string;

public class StringFormatting {
    public static void main(String[] args) {
        // 1. 基本格式化
        String name = "Alice";
        int age = 30;
        double height = 1.75;

        // 使用printf直接输出
        System.out.printf("姓名: %s, 年龄: %d, 身高: %.2f米%n", name, age, height);

        // 使用String.format()生成格式化字符串
        String info = String.format("姓名: %s, 年龄: %d, 身高: %.2f米", name, age, height);
        System.out.println(info);

        // 2. 数字格式化
        int num = 1234567;
        System.out.printf("数字: %d%n", num);                  // 十进制
        System.out.printf("十六进制: %x%n", num);             // 十六进制
        System.out.printf("八进制: %o%n", num);               // 八进制
        System.out.printf("带千位分隔符: %,d%n", num);        // 千位分隔符

        // 3. 浮点数格式化
        double pi = Math.PI;
        System.out.printf("π默认: %f%n", pi);                 // 默认6位小数
        System.out.printf("π保留2位: %.2f%n", pi);            // 保留2位小数
        System.out.printf("π科学计数法: %e%n", pi);           // 科学计数法

        // 4. 宽度和对齐
        System.out.printf("%n宽度和对齐示例:%n");
        System.out.printf("|%10s|%n", "左对齐");             // 占10位，默认右对齐
        System.out.printf("|%-10s|%n", "右对齐");            // 占10位，左对齐
        System.out.printf("|%10.2f|%n", 3.14159);            // 总宽度10，保留2位小数

        // 5. 日期时间格式化
        System.out.printf("%n日期时间示例:%n");
        long now = System.currentTimeMillis();
        System.out.printf("年份: %tY%n", now);                // 四位年份
        System.out.printf("月/日/年: %tD%n", now);            // 月/日/年
        System.out.printf("完整时间: %tc%n", now);            // 完整日期时间
    }
}
